document.domain = "itopping.co.kr";

/* =============================================
Comment: 문자열 왼쪽의 공백을 없애주는 함수
Return :
Usage  :
============================================= */
function ltrim(ohs) {
    var str;
    str=ohs;
    if(str.charAt(0)==" ") {
        str=str.substring(1);
        return ltrim(str);
    } else {
        return str;
    }
}
 
/* =============================================
Comment: 문자열 오른쪽의 공백을 없애주는 함수
Return :
Usage  :
============================================= */
function rtrim (str) {
	if (isEmpty(str)) {
		return "";
	}
	
	var pos = str.length - 1;
	
	while (str.charAt(pos) == " ") {
		pos--;
	}
	
	return str.substring(0, pos + 1);
}

/* =============================================
Comment: 문자열 양끝의 공백을 없애주는 함수
Return :
Usage  :
============================================= */
function trim (str) {
	return rtrim(ltrim(str));
}

/* =============================================
Comment: 문자열이 비어 있으면 true를 리턴
Return :
Usage  :
============================================= */
function isEmpty(ohs) {
	if (ohs==null || ltrim(ohs)=="") {
		return true;
	} else {
		return false;
	}
}

/* =============================================
Comment: 문자열이 숫자이면 true를 리턴
Return :
Usage  :
============================================= */
function isNum(ohs) {
    if(isEmpty(ohs)) {
        return false;
    }
    if ((ohs.charAt(0)!='-') && (ohs.charAt(0)<'0'||ohs.charAt(0)>'9')) { //음수일경우
        return false;
    }
    for (var i=1; i<ohs.length; i++) {
        if (ohs.charAt(i)<'0' || ohs.charAt(i)>'9') {
            return false;
        }
    }

    return true;
}

/* =============================================
Comment: Key Event에서 숫자만 입력받게 함
Return :
Usage  :
============================================= */
function onlyNum() {
	if ((event.keyCode<48) || (event.keyCode>57))
		if ((event.keyCode != 46))
		{
			event.returnValue=false;
		}
	return true;
}

/* =============================================
Comment: 새창을 연다
Return :
Usage  :
============================================= */
function openWindow(url, winName, winWidth, winHeight, winOptions) {
	var posX=0;
	var posY=0;
	var nWidth=Number(winWidth);
	var nHeight=Number(winHeight);

	if (screen.width>nWidth) {
		posX=(screen.width-nWidth)/2;
	} else {
		nWidth=screen.width;
	}

	if (screen.height>nHeight) {
		posY=(screen.height-nHeight)/2;
	} else {
		nHeight=screen.height;
	}

	winProps="width="+nWidth+", height="+nHeight+", top="+posY+", left="+posX+", "+winOptions;

	window.open(url,winName,winProps);
}

/* =============================================
 * 숫자를 주어진 길이의 문자열로 바꾼다.
 * 앞빈칸은 fillChar으로 채운다.
 * 숫자값이 주어진 자릿수보다 크만 뒤의숫자는 짤린다.
 * @param nDigit
 * @param nLen
 * @param fillChar
 * @return
 * ex) digitToString(123, 7, '*') ==> ****123
 ============================================= */
function digitToString(nDigit, nLen, fillChar) {
	var str = "";
	var n = Math.pow(10, nLen);
	var nDigitLen = nDigit.toString().length;

	if (nDigit >= n) {
		str = nDigit.toString().substring(0, nLen);
	} else {
		//n += nDigit;
		//str = n.toString().substring(1);
		for(i=0; i < (nLen - nDigitLen); i++) {
			str = str.concat(fillChar);
		}
		str = str.concat(nDigit.toString());
	}

	return str;
}

/* =============================================
Comment: 숫자에 콤마를 추가한다.
Return :
Usage  : <input type="text" name="won" onkeypress="onlyNum();" style="ime-mode:disabled;"
				 onKeyUp="this.value=toCurrencyFormat(this.value)">
============================================= */
function toCurrencyFormat(s) {
	if(ltrim(s) == "0") {
		return ltrim(s);
	}

	var str  = s.replace(/\D/g,"");
	var len  = str.length;
	var tmp  = "";
	var tm2  = "";
	var i    = 0;

	while (str.charAt(i) == '0') i++;
	str = str.substring(i,len);
	len = str.length;
	if(len < 3) {
		return str;
	} else {
		var sit = len % 3;
		if (sit > 0) {
			tmp = tmp + str.substring(0,sit) + ',';
			len = len - sit;
		}
		while (len > 3) {
			tmp = tmp + str.substring(sit,sit+3) + ',';
			len = len - 3;
			sit = sit + 3;
		}
		tmp = tmp + str.substring(sit,sit+3) + tm2;
		str = tmp;
	}
	return str;
}

/* =============================================
Comment: 변수의 콤마를 제거한다.
Return :
Usage  :
============================================= */
function removeComma(val) {
	str = "";
	strr = val.split(",");
	for (r=0;r<strr.length;r++){
		str += strr[r];
	}
	return str;
}

/* =============================================
Comment: 문자열 str1중에서 str2를 str3로 변환.
Return :
Usage  :
============================================= */
function replace(str1, str2, str3) {
	var temp;
	var nPos = -1;
	temp = "" + str1;
	while ((nPos = temp.indexOf(str2)) > -1) {
		temp = "" + (temp.substring(0, nPos) + str3 + temp.substring((nPos + str2.length), temp.length));
	}

	return temp;
}

/* =============================================
Comment: str1의 문자열을 str2의 태그로 둘러쌓인 문자열로 반환한다.
Return :
Usage  :
============================================= */
function setTagValue(str1, str2) {
	var rValue = "";

	if(str1 != null && !isEmpty(str2)) {
		rValue = "<" + str2 + ">" + str1 + "</" + str2 + ">";
	}

	return rValue;
}

/* =============================================
Comment: str1의 문장중 str2의 태그로 둘러쌓인 문자열을 반환한다
Return :
Usage  :
============================================= */
function getTagValue(str1, str2) {
	var rValue = "";
	var n1=str1.indexOf("<"+str2+">");
    var n2=str1.indexOf("</"+str2+">");

    if (n1 >= 0 && n2 >= 0) {
		rValue = str1.substring(n1 + 2 + str2.length, n2);
    }

    return rValue
}


/* =============================================
Comment: str1의 문장중 str2의 태그로 둘러쌓인
		 문자열들을 배열로 반환한다
Return :
Usage  :
============================================= */
function getTagValues(str1, str2) {
	var arrEvent = new Array();
	var nFrom = 0;
	var nCnt = 0;

	while (true) {
        var n1=str1.indexOf("<"+str2+">",nFrom);
        var n2=str1.indexOf("</"+str2+">",nFrom);
        if (n1 >= 0 && n2 >= 0) {
			arrEvent[nCnt] = str1.substring(n1 + 2 + str2.length, n2);
        } else {
            break;
        }

        nFrom = n2 + 3 + str2.length;
        nCnt++;
    }

    return arrEvent;
}


/* =============================================
Comment: cursor 모양을 컨트롤한다.
Return :
Usage  :
============================================= */
function setBodyCursor(cursorType) {
    document.body.style.cursor = cursorType;
}

function setCursor(objectName, cursorType) {
    document.all(objectName).style.cursor = cursorType;
}


/* =============================================
Comment: 윈도의 크기를 변화시킨다.
         입력 사이즈가 음수이면 현재 윈도사이즈,
         true 이면 창을 가운데로 위치시킨다.
Return :
Usage  : resizeWindow(-1, 500, true);
============================================= */
function resizeWindow(nWidth, nHeight, isCenter) {
	if (nWidth > 0) {
    	if (nWidth > screen.width) {
    		nWidth = screen.width;
    	}
    } else {
    	nWidth = document.body.clientWidth;
    }
    
    if (nHeight > 0) {
    	if (nHeight > screen.height) {
    		nHeight = screen.height;
    	}
    } else {
    	nHeight = document.body.clientHeight;
    }
    
    var posX=0;
    var posY=0;
	if (isCenter) {
        posX = (screen.width - nWidth) / 2;
		posY = (screen.height - nHeight) / 2;
		
        window.moveTo(posX, posY);
    }

    window.resizeBy(nWidth - document.body.clientWidth, nHeight - document.body.clientHeight);
    
    if (isCenter) { //창크기때문에 이동이 덜 되었을때 대비 재이동
        window.moveTo(posX, posY);
    }
}


/* =============================================
Comment: 객체의 속성리스트를 보여준다(개발시 사용).
Return :
Usage  : getObjectAttributes(document.body);
============================================= */
function getObjectAttributes(obj) {
    attWin = window.open("" , "attWin", "width=800, height=700,resizable=yes,scrollbars=yes");
    attWin.document.write("속성:" + obj + "<br><br>");

    for (p in obj) {
        attWin.document.write(p + ": ") + attWin.document.write(obj[p] + "<br>");
    }
}


/* =============================================
Comment: 날짜 형식을 변환한다(2004-11-11 --> 20041111)
Return :
Usage  : 
============================================= */
function convertDateFormat(formName, element1, element2) {
	var theForm = document.all(formName);
	theForm.all(element1).value = ltrim(replace(theForm.all(element2).value, "-", ""));
}


/* =============================================
Comment: 문자열중 숫자만 남기고 모두 제거한다(2005-05-19 --> 20050519)
Return :
Usage  : 
============================================= */
function getNumberOnly(str) {
	var numStr = "";
	
	var ch;
	for (var i = 0; i < str.length; i++) {
		ch = str.charAt(i);
        if (ch >= '0' && ch <='9') {
            numStr = numStr.concat(ch);
        }
    }

	return numStr;
}


/* =============================================
Comment: 문자열의 바이트 길이를 리턴한다.(한글=2byte,영숫자=1byte)
Return :
Usage  : 
============================================= */
function getByteLength(p1) {
	var len = 0;
	var str = p1.substring(0);
	
	if(str == null) return 0;
	
	for(var i = 0; i < str.length; i++) {
		var ch = escape(str.charAt(i));
		
		if(ch.length == 1) len++;
		else if(ch.indexOf("%u") != -1) len += 3;  // 한글 등 2bytes문자 - 기본은 2bytes이나 오라클이 UTF-8로 인코딩할 경우엔 3bytes로 처리하므로 +3
		else if(ch.indexOf("%") != -1) len += ch.length / 3; // 특수문자 등
	}
	
	return len;
}


/* =============================================
Comment: inputObj의 날짜값을 targetObj에 8자리 숫자로 표시한다.
Return :
Usage  : 
============================================= */
function setDate(inputObj, targetObj) {
	var dateStr = getNumberOnly(inputObj.value);
	
	if (!isValidDate(dateStr)) {
		openWarningMessageWindow('입력 값이 날짜 형식에 맞지 않습니다<br>가능예)<br>2009-05-19, 2009/05/19, 20090519 등..');
		targetObj.value = "";
		inputObj.value = "";
        inputObj.select();
        return;
	}

	targetObj.value = dateStr;
	inputObj.value = dateStr.substr(0, 4) + "-" + dateStr.substr(4, 2) + "-" + dateStr.substr(6, 2);
}


/* =============================================
Comment: 날짜형식이 맞는지 체크한다.
Return :
Usage  : 
============================================= */
function isValidDate(yyyymmdd) {
	yyyymmdd = getNumberOnly(yyyymmdd);
	if (yyyymmdd.length != 8) {
		return false;
	}
	
	var mm = parseInt(yyyymmdd.substr(4, 2), 10);
	if (mm < 1 || mm > 12) {
		return false;
	}

	var yyyy = yyyymmdd.substr(0, 4);
	mm = mm -1;
	var dd = parseInt(yyyymmdd.substr(6, 2), 10);
	var end = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    if ((yyyy % 4 == 0 && yyyy % 100 != 0) || yyyy % 400 == 0) {
        end[1] = 29;
    }
    return (dd >= 1 && dd <= end[mm]);
}